\documentclass{beamer}

% \usetheme{Warsaw}
% \usetheme{Darmstadt}
\mode<presentation>
\usetheme{boxes}
\useoutertheme{smoothbars}
\usecolortheme{whale}

\addfootbox{section in head/foot}{\tiny\quad\color{white}\insertshorttitle}
\addfootbox{frametitle}{\tiny\color{white}\hfill Parallel Processing Institute, Fudan University\hfill}
\addfootbox{section in head/foot}{\tiny\color{white}\hfill Slide
  \insertframenumber\ of \inserttotalframenumber\quad}

% \defbeamertemplate*{footline}{infolines theme}
% {
%   \leavevmode
%   \hbox{%
%     \begin{beamercolorbox}[wd=.4\paperwidth,ht=2.25ex,dp=1ex,center]{section in head/foot}%
%       \tiny\quad\color{white}\insertshorttitle
%     \end{beamercolorbox}%
%     \begin{beamercolorbox}[wd=.2\paperwidth,ht=2.25ex,dp=1ex,center]{frametitle}%
%       \tiny\color{white}Slide\insertframenumber\ of \inserttotalframenumber
%     \end{beamercolorbox}
%     \begin{beamercolorbox}[wd=.4\paperwidth,ht=2.25ex,dp=1ex,center]{section in head/foot}%
%       \tiny\color{white}Parallel Processing Institute, Fudan University%
%     \end{beamercolorbox}%
%   }
%   \vskip0pt%
% }

% \AtBeginSection{
%   \begin{frame}
%    \frametitle{Outline}
%     \tableofcontents{}
%  \end{frame}
% }

\title{End-To-End Arguments in System Design}
\author{J.H. Saltzer \and D.P. Reed \and D.D. Clark}
\institute{Massachusetts Institute of Technology Laboratory for Computer Science}
\date{ACM Transactions on Computer System, 1984}

\begin{document}

\begin{frame}
  \titlepage{}
  \begin{center}
      Presented by Wang Yuanxuan
  \end{center}
\end{frame}

\begin{frame}
  \frametitle{Outline}
  \tableofcontents[hideallsubsections]
\end{frame}

\section{Introduction}

\subsection{Motivation}

\begin{frame}
  \frametitle{Which functions belong at which layer?}
  \begin{itemize}
  \item Reliability
  \item Routing
  \item Encryption
  \item Compression
  \item Data conversion
  \end{itemize}
\end{frame}

\subsection{Definition}

\begin{frame}
  \frametitle{The Argument}
  \begin{overprint}
  \onslide<1>
  \begin{block}{When it is applicable}
    The function in question can completely and correctly be implemented \textbf{only} with the
    knowledge and help of the application standing at the endpoints of the communication
    system...
  \end{block}

  \begin{block}{The consequence}
    ...Therefore, providing that questioned function as a feature of the communication system itself is not
    possible...
  \end{block}

  \onslide<2>
  \begin{block}{The exception}
    ...Sometimes an incomplete version of the function provided by the communication system may be useful as a performance
    enhancement.
  \end{block}
  \end{overprint}
\end{frame}

\section{Careful file transfer}

\subsection{End-to-End Caretaking}

\begin{frame}
  \frametitle{End-to-End Caretaking}
  \begin{block}{Problem}
    Move the file from computer A's storage to computer B's storage \textbf{without damage}.
  \end{block}
  \begin{overprint}

  \onslide<1>
  \begin{block}{Steps}
    \begin{itemize}
    \item Host \emph{A}: read the file, and passes it to the file transfer program
    \item Host \emph{A}: asks the data communication system to transmit the file
    \item The data communication network moves the packets from \emph{A} to \emph{B}
    \item Host \emph{B}: receives the packets and hands data to the file transfer program
    \item Host \emph{B}: writes data on the disks
    \end{itemize}
  \end{block}
  \onslide<2>
  \begin{block}{Threats}
    \begin{itemize}
    \item Hardwares faults in the disk storage system
    \item Software mistake in buffering and copying the data
    \item Hardware transient error while buffering and copying
    \item The communication system might drop or change the bits in a packet
    \item Either of the hosts may crash after a while
    \end{itemize}
  \end{block}

  \onslide<3>
  \begin{block}{One approach}
    Reinforce each of the steps along the way using duplicate copies, time-out and retry,
    carefully located redundancy for error detection, crash recovery, etc.

    Only reduce the probability of each of the individual threats.
  \end{block}

  \onslide<4>
  \begin{block}{End-to-end check and retry}
    Store each file with a checksum, recalculated the checksum at host B and compare it
    with the original checksum.
  \end{block}

  \onslide<5>
  \begin{block}{The argument}
    In order to achieve careful file transfer, the application program that performs
    the transfer must supply a file-transfer-specific, end-to-end reliability guarantee.
  \end{block}
  \end{overprint}

\end{frame}

\subsection{Performance Aspects}

\begin{frame}
  \frametitle{Performance Aspects}
  \begin{block}{Lower levels should play no part in obtaining reliability?}
    \begin{itemize}
    \item The probability of correct transfer decreases exponentially
    \item The lower levels need not provide \textbf{perfect} reliability.
    \end{itemize}
  \end{block}
\end{frame}

\begin{frame}
  \frametitle{Trade-off}
  \begin{block}{Reliability of the communication system}
    \begin{itemize}
    \item Requires careful thought
    \item Too unreliable - suffer from frequent retries
    \item Beefed up with measures - performance cost in the form of bandwidth lost and added delay
    \end{itemize}
  \end{block}
\end{frame}

\begin{frame}
  \frametitle{Where to place the function?}
  \begin{block}{Lower level function costs}
    \begin{itemize}
    \item Applications that do not need the function will pay for it anyway
    \item The low-level subsystem may not have as much information as the higher levels
    \end{itemize}
  \end{block}

  \begin{block}{Application level function costs}
    \begin{itemize}
    \item Each application must now provide its own function
    \item Increase the delay involved in correcting a failure
    \end{itemize}
  \end{block}
\end{frame}

\section{Other Examples}

\subsection{}

\begin{frame}
  \frametitle{Other Examples}
  \begin{block}{Delivery Guarantees}
    \begin{itemize}
    \item We only care if the receiver did the job or not
    \item Subsystem should not try to make this guarantee because only the
      application will know if the message made it or not
    \end{itemize}
  \end{block}

  \begin{block}{Secure transmissions}
    \begin{itemize}
    \item Responsibility of the application, not the communication subsystem
    \end{itemize}
  \end{block}
\end{frame}

\begin{frame}
  \frametitle{Other Examples}

  \begin{block}{Duplicate Message Suppression}
    \begin{itemize}
    \item Suppression must be accomplished by the application itself the knowledge
      of how to detect its own duplicates
    \item End-to-end argument: If the application level has to have a duplicate-suppressing
      mechanism anyway, that mechanism can also suppress any duplicates generated inside
      the communication network
    \end{itemize}
  \end{block}
\end{frame}

\section{Identifying the ends}

\subsection{}

\begin{frame}
  \frametitle{Identifying the ends}
  \begin{example}
    A computer communication network that carries some packet voice connections
  \end{example}
  \begin{block}{End-to-end argument}
    \begin{itemize}
    \item No need to accomplish bit-perfect communication
    \item High-level error correction: ``pardon?''
    \end{itemize}
  \end{block}
\end{frame}

\begin{frame}
  \frametitle{Identifying the ends}
  \begin{example}
    A speech message system: voice packets are stored in a file for later listening
  \end{example}
  \begin{block}{}
    \begin{itemize}
    \item No longer any objection to low-level reliability measures
    \item An end-to-end argument does apply to packet ordering and duplicate suppresion
    \item The end-to-end argument is not ab absolute rule, but rather a guideline
    \end{itemize}
  \end{block}
\end{frame}

\section{Conclusions}

\subsection{}

\begin{frame}
  \frametitle{Conclusions}
  \begin{block}{End-to-end argument}
    \begin{itemize}
    \item Application knows best
    \item Subsystem designers should not be tempted to help the users by taking on
      more function than necessary
    \end{itemize}
  \end{block}
\end{frame}

\end{document}
